package model

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"os"
	"os/signal"
)

var DB *gorm.DB
var err error

func init() {
	fmt.Println("开始连接mysql数据库")
	if err != nil {
		fmt.Printf("Failed to read file: %v", err)
		os.Exit(1)
	}
	dsn := "root:root@tcp(127.0.0.1:3306)/go_test?charset=utf8mb4&parseTime=True&loc=Local"

	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		DryRun: false,                               //直接运行生成sql而不执行
		Logger: logger.Default.LogMode(logger.Info), // 可以打印SQL
		// QueryFields: true, // 使用表的所有字段执行SQL查询
		// 关闭事务，gorm默认是打开的，关闭可以提升性能
		// SkipDefaultTransaction: true,
	})

	c := make(chan os.Signal)
	if err != nil {
		fmt.Println("Connect database failed and Shutdown web server")
		c <- os.Interrupt
		signal.Notify(c, os.Interrupt)

		// 下面是监听所有的信号
		// signal.Notify(c)
		// 致命错误，如果web服务器在它启动前，则不能关闭服务器，所以需要用到上面的signal 来处理
		// log.Fatal("connect database failed", err)
	}
}
